﻿using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.BaseDatos.Ventas.Catalogos
{
    public class dbo_Cat_Cliente
    {
        #region Propiedades

        private string _RFC;
        private string _Usuario;

        #endregion

        #region Constructores

        public dbo_Cat_Cliente(string RFC, string Usuario)
        {
            this._RFC = RFC;
            this._Usuario = Usuario;
        }

        #endregion

        #region INSERT

        public Respuesta Insert_Cliente(

            int Clave,
            string Razon_Social,
            string RFC_Cliente,
            string Nombre_Comercial,
            int Id_GrupoClientes,
            int Id_Colaborador,
            int Id_Terminos_Pago,
            int Id_Moneda,
            double LimiteCredito,
            string Calle,
            string Num_Ext,
            string Num_Int,
            string Entre_Calle_1,
            string Entre_Calle_2,
            string Colonia,
            string Referencia,
            string Población,
            string CP,
            int Id_Estado,
            int Id_Pais,
            string Municipio,
            string Env_Calle,
            string Env_Num_Ext,
            string Env_Num_Int,
            string Env_Entre_Calle_1,
            string Env_Entre_Calle_2,
            string Env_Colonia,
            string Env_Referencia,
            string Env_Población,
            string Env_CP,
            int Env_Id_Estado,
            int Env_Id_Pais,
            string Env_Municipio,
            bool EsCliente,
            string envia,
            string correoElectronico
        )
        {
            try
            {
                string Query = @"INSERT INTO dbo_Cat_Cliente
                                (                                
	                                Id_Cliente,
	                                RFC,
	                                Clave,
	                                Razon_Social,
	                                RFC_Cliente,
	                                Nombre_Comercial,
	                                Id_GrupoClientes,
	                                Id_Colaborador,
	                                Id_Terminos_Pago,
	                                Id_Moneda,
	                                LimiteCredito,
	                                Calle,
	                                Num_Ext,
	                                Num_Int,
	                                Entre_Calle_1,
	                                Entre_Calle_2,
	                                Colonia,
	                                Referencia,
	                                Población,
	                                CP,
	                                Id_Estado,
	                                Id_Pais,
	                                Municipio,
	                                Env_Calle,
	                                Env_Num_Ext,
	                                Env_Num_Int,
	                                Env_Entre_Calle_1,
	                                Env_Entre_Calle_2,
	                                Env_Colonia,
	                                Env_Referencia,
	                                Env_Población,
	                                Env_CP,
	                                Env_Id_Estado,
	                                Env_Id_Pais,
	                                Env_Municipio,
	                                EsCliente,
	                                Correo_Electronico,
                                    Enviar,
                                    Fecha_Alta,
	                                Usuario_Alta,
	                                Fecha_Mantto,
	                                Usuario_Mantto
                             )
                             VALUES
                             (
                                IIF(DCount('*', 'dbo_Cat_Cliente') = 0, 1, DMax('Id_Cliente', 'dbo_Cat_Cliente') + 1),
                                '@@RFC',
	                            @@Clave,
	                            '@@Razon_Social',
	                            '@@RFC_Cliente',
	                            '@@Nombre_Comercial',
	                            @@Id_GrupoClientes,
	                            @@Id_Colaborador,
	                            @@Id_Terminos_Pago,
	                            @@Id_Moneda,
	                            @@LimiteCredito,
	                            '@@Calle',
	                            '@@Num_Ext',
	                            '@@Num_Int',
	                            '@@Entre_Calle_1',
	                            '@@Entre_Calle_2',
	                            '@@Colonia',
	                            '@@Referencia',
	                            '@@Población',
	                            '@@CP',
	                            @@Id_Estado,
	                            @@Id_Pais,
	                            '@@Municipio',
	                            '@@Env_Calle',
	                            '@@Env_Num_Ext',
	                            '@@Env_Num_Int',
	                            '@@Env_Entre_Calle_1',
	                            '@@Env_Entre_Calle_2',
	                            '@@Env_Colonia',
	                            '@@Env_Referencia',
	                            '@@Env_Población',
	                            '@@Env_CP',
	                            @@Env_Id_Estado,
	                            @@Env_Id_Pais,
	                            '@@Env_Municipio',
	                            @@EsCliente,             
                                '@@Correo_Electronico',
                                @@Enviar,
                                NOW(),
                                '@@Usuario_Alta',
                                NOW(),
                                '@@Usuario_Mantto'
                             )";



                Query = Query.Replace("@@Clave", Clave.ToString());
                Query = Query.Replace("@@Razon_Social", Razon_Social.Replace("'", "''"));
                Query = Query.Replace("@@RFC_Cliente", RFC_Cliente);
                Query = Query.Replace("@@Nombre_Comercial", Nombre_Comercial.Replace("'", "''"));
                Query = Query.Replace("@@Id_GrupoClientes", Id_GrupoClientes.ToString());
                Query = Query.Replace("@@Id_Colaborador", Id_Colaborador.ToString());
                Query = Query.Replace("@@Id_Terminos_Pago", Id_Terminos_Pago.ToString());
                Query = Query.Replace("@@Id_Moneda", Id_Moneda.ToString());
                Query = Query.Replace("@@LimiteCredito", LimiteCredito.ToString());
                Query = Query.Replace("@@Calle", Calle.Replace("'", "''"));
                Query = Query.Replace("@@Num_Ext", Num_Ext);
                Query = Query.Replace("@@Num_Int", Num_Int);
                Query = Query.Replace("@@Entre_Calle_1", Entre_Calle_1.Replace("'", "''"));
                Query = Query.Replace("@@Entre_Calle_2", Entre_Calle_2.Replace("'", "''"));
                Query = Query.Replace("@@Colonia", Colonia.Replace("'", "''"));
                Query = Query.Replace("@@Referencia", Referencia.Replace("'", "''"));
                Query = Query.Replace("@@Población", Población.Replace("'", "''"));
                Query = Query.Replace("@@Id_Estado", Id_Estado.ToString());
                Query = Query.Replace("@@Id_Pais", Id_Pais.ToString());
                Query = Query.Replace("@@CP", CP);
                Query = Query.Replace("@@Municipio", Municipio.Replace("'", "''"));
                Query = Query.Replace("@@Env_Calle", Env_Calle.Replace("'", "''"));
                Query = Query.Replace("@@Env_Num_Ext", Env_Num_Ext);
                Query = Query.Replace("@@Env_Num_Int", Env_Num_Int);
                Query = Query.Replace("@@Env_Entre_Calle_1", Env_Entre_Calle_1.Replace("'", "''"));
                Query = Query.Replace("@@Env_Entre_Calle_2", Env_Entre_Calle_2.Replace("'", "''"));
                Query = Query.Replace("@@Env_Colonia", Env_Colonia.Replace("'", "''"));
                Query = Query.Replace("@@Env_Referencia", Env_Referencia.Replace("'", "''"));
                Query = Query.Replace("@@Env_Población", Env_Población.Replace("'", "''"));
                Query = Query.Replace("@@Env_Id_Estado", Env_Id_Estado.ToString());
                Query = Query.Replace("@@Env_Id_Pais", Env_Id_Pais.ToString());
                Query = Query.Replace("@@Env_CP", Env_CP);
                Query = Query.Replace("@@Correo_Electronico", correoElectronico.ToString());


                Query = Query.Replace("@@Env_Municipio", Env_Municipio.Replace("'", "''"));

                if (EsCliente)
                    Query = Query.Replace("@@EsCliente", "1");
                else
                    Query = Query.Replace("@@EsCliente", "0");


                Query = Query.Replace("@@Enviar", envia);
                Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);
                Query = Query.Replace("@@RFC", this._RFC);

                return SrvDB.ExecuteQuery_Insert(Query);


            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region UPDATE

        public Respuesta Update_Change_To_Cliente(object Id)
        {
            try
            {
                string Query = @"UPDATE dbo_Cat_Cliente SET
                                    EsCliente = @@EsCliente,     
                                    Fecha_Mantto = NOW(),
                                    Usuario_Mantto = '@@Usuario_Mantto'

                                 WHERE Id_Cliente = @@Id";


                Query = Query.Replace("@@EsCliente", "1");
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);
                Query = Query.Replace("@@Id", ((Int32)Id).ToString());
                return SrvDB.ExecuteQuery_Update(Query);
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }


        public Respuesta Update_Cliente_Por_Id(
            object Id,
            int Clave,
            string Razon_Social,
            string RFC_Cliente,
            string Nombre_Comercial,
            int Id_GrupoClientes,
            int Id_Colaborador,
            int Id_Terminos_Pago,
            int Id_Moneda,
            double LimiteCredito,
            string Calle,
            string Num_Ext,
            string Num_Int,
            string Entre_Calle_1,
            string Entre_Calle_2,
            string Colonia,
            string Referencia,
            string Población,
            string CP,
            int Id_Estado,
            int Id_Pais,
            string Municipio,
            string Env_Calle,
            string Env_Num_Ext,
            string Env_Num_Int,
            string Env_Entre_Calle_1,
            string Env_Entre_Calle_2,
            string Env_Colonia,
            string Env_Referencia,
            string Env_Población,
            string Env_CP,
            int Env_Id_Estado,
            int Env_Id_Pais,
            string Env_Municipio,
            bool EsCliente,
            string correoElectronico,
            string envia
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Cat_Cliente SET
                                             
                                    Clave = @@Clave,
	                                Razon_Social = '@@Razon_Social',
	                                RFC_Cliente = '@@RFC_Cliente',
	                                Nombre_Comercial = '@@Nombre_Comercial',
	                                Id_GrupoClientes = @@Id_GrupoClientes,
	                                Id_Colaborador = @@Id_Colaborador,
	                                Id_Terminos_Pago = @@Id_Terminos_Pago,
	                                Id_Moneda = @@Id_Moneda,
	                                LimiteCredito = @@LimiteCredito,
	                                Calle = '@@Calle',
	                                Num_Ext = '@@Num_Ext',
	                                Num_Int = '@@Num_Int',
	                                Entre_Calle_1 = '@@Entre_Calle_1',
	                                Entre_Calle_2 = '@@Entre_Calle_2',
	                                Colonia = '@@Colonia',
	                                Referencia= '@@Referencia',
	                                Población = '@@Población',
	                                CP = '@@CP',
	                                Id_Estado = @@Id_Estado,
	                                Id_Pais = @@Id_Pais,
	                                Municipio = '@@Municipio',
	                                Env_Calle = '@@Env_Calle',
	                                Env_Num_Ext = '@@Env_Num_Ext',
	                                Env_Num_Int = '@@Env_Num_Int',
	                                Env_Entre_Calle_1 = '@@Env_Entre_Calle_1',
	                                Env_Entre_Calle_2 = '@@Env_Entre_Calle_2',
	                                Env_Colonia = '@@Env_Colonia',
	                                Env_Referencia = '@@Env_Referencia',
	                                Env_Población = '@@Env_Población',
	                                Env_CP = '@@Env_CP',
	                                Env_Id_Estado = @@Env_Id_Estado,
	                                Env_Id_Pais = @@Env_Id_Pais,
	                                Env_Municipio = '@@Env_Municipio',
	                                EsCliente = @@EsCliente,     
                                    Correo_Electronico = '@@Correo_Electronico',
                                    Enviar = @@Enviar,
                                    Fecha_Mantto = NOW(),
                                    Usuario_Mantto = '@@Usuario_Mantto'

                                 WHERE Id_Cliente = @@Id";

                Query = Query.Replace("@@Clave", Clave.ToString());
                Query = Query.Replace("@@Razon_Social", Razon_Social.Replace("'", "''"));
                Query = Query.Replace("@@RFC_Cliente", RFC_Cliente);
                Query = Query.Replace("@@Nombre_Comercial", Nombre_Comercial.Replace("'", "''"));
                Query = Query.Replace("@@Id_GrupoClientes", Id_GrupoClientes.ToString());
                Query = Query.Replace("@@Id_Colaborador", Id_Colaborador.ToString());
                Query = Query.Replace("@@Id_Terminos_Pago", Id_Terminos_Pago.ToString());
                Query = Query.Replace("@@Id_Moneda", Id_Moneda.ToString());
                Query = Query.Replace("@@LimiteCredito", LimiteCredito.ToString());
                Query = Query.Replace("@@Calle", Calle.Replace("'", "''"));
                Query = Query.Replace("@@Num_Ext", Num_Ext);
                Query = Query.Replace("@@Num_Int", Num_Int);
                Query = Query.Replace("@@Entre_Calle_1", Entre_Calle_1.Replace("'", "''"));
                Query = Query.Replace("@@Entre_Calle_2", Entre_Calle_2.Replace("'", "''"));
                Query = Query.Replace("@@Colonia", Colonia.Replace("'", "''"));
                Query = Query.Replace("@@Referencia", Referencia.Replace("'", "''"));
                Query = Query.Replace("@@Población", Población.Replace("'", "''"));
                Query = Query.Replace("@@Id_Estado", Id_Estado.ToString());
                Query = Query.Replace("@@Id_Pais", Id_Pais.ToString());
                Query = Query.Replace("@@CP", CP);
                Query = Query.Replace("@@Municipio", Municipio.Replace("'", "''"));
                Query = Query.Replace("@@Env_Calle", Env_Calle.Replace("'", "''"));
                Query = Query.Replace("@@Env_Num_Ext", Env_Num_Ext);
                Query = Query.Replace("@@Env_Num_Int", Env_Num_Int);
                Query = Query.Replace("@@Env_Entre_Calle_1", Env_Entre_Calle_1.Replace("'", "''"));
                Query = Query.Replace("@@Env_Entre_Calle_2", Env_Entre_Calle_2.Replace("'", "''"));
                Query = Query.Replace("@@Env_Colonia", Env_Colonia.Replace("'", "''"));
                Query = Query.Replace("@@Env_Referencia", Env_Referencia.Replace("'", "''"));
                Query = Query.Replace("@@Env_Población", Env_Población.Replace("'", "''"));
                Query = Query.Replace("@@Env_Id_Estado", Env_Id_Estado.ToString());
                Query = Query.Replace("@@Env_Id_Pais", Env_Id_Pais.ToString());
                Query = Query.Replace("@@Env_CP", Env_CP);
                Query = Query.Replace("@@Env_Municipio", Env_Municipio.Replace("'", "''"));

                if (EsCliente)
                    Query = Query.Replace("@@EsCliente", "1");
                else
                    Query = Query.Replace("@@EsCliente", "0");
                Query = Query.Replace("@@Correo_Electronico", correoElectronico.ToString());

                Query = Query.Replace("@@Enviar", envia);
                Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);

                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Update(Query);


            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region DELETE

        public Respuesta Delete_Cliente_Por_Id(
            object Id
        )
        {
            try
            {
                string Query = @"DELETE FROM dbo_Cat_Cliente 
                                    WHERE Id_Cliente = @@Id";

                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Delete(Query);


            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region SELECT

        public DataTable Get_Clientes_Por_Id(object Id)
        {

            string Query = @"SELECT 
                            
                                Cliente.*,
								GpoClie.Nombre AS Desc_GrupoClientes,
								Colaborador.Nombre AS Desc_Colaborador,
								TerPago.Nombre AS Desc_Terminos_Pago,
								Moneda.Nombre AS Desc_Moneda,
								E1.Nombre AS Desc_Estado,
								P1.Nombre AS Desc_Pais,
								E2.Nombre AS Env_Desc_Estado,
								P2.Nombre AS Env_Desc_Pais

                            FROM ((((((((dbo_Cat_Cliente AS Cliente
                            
                                INNER JOIN dbo_Cat_Grupo_Clientes AS GpoClie ON Cliente.Id_GrupoClientes = GpoClie.Id_GrupoClientes)
                                INNER JOIN dbo_Cat_Colaborador AS Colaborador ON Cliente.Id_Colaborador = Colaborador.Id_Colaborador)
                                INNER JOIN dbo_Cat_Terminos_Pago AS TerPago ON Cliente.Id_Terminos_Pago = TerPago.Id_Terminos_Pago)
                                INNER JOIN dbo_Cat_Moneda AS Moneda ON Cliente.Id_Moneda = Moneda.Id_Moneda)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E1 ON Cliente.Id_Estado = E1.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P1 ON Cliente.Id_Pais = P1.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E2 ON Cliente.Env_Id_Estado = E2.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P2 ON Cliente.Env_Id_Pais = P2.Id_SIIE_Pais)

                            WHERE Cliente.Id_Cliente = @@Id";

            Query = Query.Replace("@@Id", (Int32.Parse(Id.ToString())).ToString());

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Clientes_Por_RFC(string RFC_Cliente)
        {

            string Query = @"SELECT 
                            
                                Cliente.*,
								GpoClie.Nombre AS Desc_GrupoClientes,
								Colaborador.Nombre AS Desc_Colaborador,
								TerPago.Nombre AS Desc_Terminos_Pago,
								Moneda.Nombre AS Desc_Moneda,
								E1.Nombre AS Desc_Estado,
								P1.Nombre AS Desc_Pais,
								E2.Nombre AS Env_Desc_Estado,
								P2.Nombre AS Env_Desc_Pais

                            FROM ((((((((dbo_Cat_Cliente AS Cliente
                            
                                INNER JOIN dbo_Cat_Grupo_Clientes AS GpoClie ON Cliente.Id_GrupoClientes = GpoClie.Id_GrupoClientes)
                                INNER JOIN dbo_Cat_Colaborador AS Colaborador ON Cliente.Id_Colaborador = Colaborador.Id_Colaborador)
                                INNER JOIN dbo_Cat_Terminos_Pago AS TerPago ON Cliente.Id_Terminos_Pago = TerPago.Id_Terminos_Pago)
                                INNER JOIN dbo_Cat_Moneda AS Moneda ON Cliente.Id_Moneda = Moneda.Id_Moneda)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E1 ON Cliente.Id_Estado = E1.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P1 ON Cliente.Id_Pais = P1.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E2 ON Cliente.Env_Id_Estado = E2.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P2 ON Cliente.Env_Id_Pais = P2.Id_SIIE_Pais)

                            WHERE Cliente.RFC_Cliente = '@@RFC_Cliente' AND Cliente.RFC = '@@RFC'";

            Query = Query.Replace("@@RFC_Cliente", RFC_Cliente);
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Clientes()
        {
            string Query = @"SELECT 
                            
                                Cliente.*,
								GpoClie.Nombre AS Desc_GrupoClientes,
								Colaborador.Nombre AS Desc_Colaborador,
								TerPago.Nombre AS Desc_Terminos_Pago,
								Moneda.Nombre AS Desc_Moneda,
								E1.Nombre AS Desc_Estado,
								P1.Nombre AS Desc_Pais,
								E2.Nombre AS Env_Desc_Estado,
								P2.Nombre AS Env_Desc_Pais

                            FROM ((((((((dbo_Cat_Cliente AS Cliente
                            
                                INNER JOIN dbo_Cat_Grupo_Clientes AS GpoClie ON Cliente.Id_GrupoClientes = GpoClie.Id_GrupoClientes)
                                INNER JOIN dbo_Cat_Colaborador AS Colaborador ON Cliente.Id_Colaborador = Colaborador.Id_Colaborador)
                                INNER JOIN dbo_Cat_Terminos_Pago AS TerPago ON Cliente.Id_Terminos_Pago = TerPago.Id_Terminos_Pago)
                                INNER JOIN dbo_Cat_Moneda AS Moneda ON Cliente.Id_Moneda = Moneda.Id_Moneda)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E1 ON Cliente.Id_Estado = E1.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P1 ON Cliente.Id_Pais = P1.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E2 ON Cliente.Env_Id_Estado = E2.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P2 ON Cliente.Env_Id_Pais = P2.Id_SIIE_Pais)

                            WHERE Cliente.RFC = '@@RFC' AND EsCliente <> 0";

            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Prospectos()
        {
            string Query = @"SELECT 
                            
                                Cliente.*,
								GpoClie.Nombre AS Desc_GrupoClientes,
								Colaborador.Nombre AS Desc_Colaborador,
								TerPago.Nombre AS Desc_Terminos_Pago,
								Moneda.Nombre AS Desc_Moneda,
								E1.Nombre AS Desc_Estado,
								P1.Nombre AS Desc_Pais,
								E2.Nombre AS Env_Desc_Estado,
								P2.Nombre AS Env_Desc_Pais

                            FROM ((((((((dbo_Cat_Cliente AS Cliente
                            
                                INNER JOIN dbo_Cat_Grupo_Clientes AS GpoClie ON Cliente.Id_GrupoClientes = GpoClie.Id_GrupoClientes)
                                INNER JOIN dbo_Cat_Colaborador AS Colaborador ON Cliente.Id_Colaborador = Colaborador.Id_Colaborador)
                                INNER JOIN dbo_Cat_Terminos_Pago AS TerPago ON Cliente.Id_Terminos_Pago = TerPago.Id_Terminos_Pago)
                                INNER JOIN dbo_Cat_Moneda AS Moneda ON Cliente.Id_Moneda = Moneda.Id_Moneda)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E1 ON Cliente.Id_Estado = E1.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P1 ON Cliente.Id_Pais = P1.Id_SIIE_Pais)
                                INNER JOIN dbo_Cat_SIIE_Estado AS E2 ON Cliente.Env_Id_Estado = E2.Id_SIIE_Estado)
                                INNER JOIN dbo_Cat_SIIE_Pais AS P2 ON Cliente.Env_Id_Pais = P2.Id_SIIE_Pais)

                            WHERE Cliente.RFC = '@@RFC' AND EsCliente = 0";

            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }


        public DataTable Get_Clientes_AutoComplete_Todos()
        {
            string Query = @"SELECT Id_Cliente, RFC_Cliente + ' - ' + Razon_Social AS Complete FROM dbo_Cat_Cliente
                            WHERE RFC = '@@RFC'";

            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Clientes_AutoComplete_SoloClientes()
        {
            string Query = @"SELECT Id_Cliente, RFC_Cliente + ' - ' + Razon_Social AS Complete FROM dbo_Cat_Cliente
                            WHERE RFC = '@@RFC'";

            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Clientes_AutoComplete_SoloProspectos()
        {
            string Query = @"SELECT Id_Cliente, RFC_Cliente + ' - ' + Razon_Social AS Complete FROM dbo_Cat_Cliente
                            WHERE RFC = '@@RFC'";

            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Report(int Id_GrupoClientes, bool EsCliente)
        {
            string Query = @"

                SELECT    
    
	                a.RFC, 
	                a.Id_Cliente, 
	                a.RFC_Cliente, 
	                a.Razon_Social, 
	                a.Calle, 
	                a.Num_Ext, 
	                a.Num_Int, 
	                a.Colonia, 
	                a.CP, 
	                Estado_Cliente.Nombre AS Estado, 
	                a.Municipio, 
	                Pais_Cliente.Nombre AS Pais, 
                    a.Calle + ' ' + a.Num_Ext + ' ' + 
	
	                Switch(
		                a.Num_Int   IS NULL, ', COL. ',
		                true, a.Num_Int + ', COL. '
	                )

	                + a.Colonia + ', C.P. ' + a.CP + ', ' + a.Municipio + ', ' + Estado_Cliente.Nombre AS Direccion, 	

	                a.Nombre_Comercial, 
	                a.Id_GrupoClientes, 
                    dbo_Cat_Grupo_Clientes.Nombre AS Grupo_Clientes, 
	                a.Id_Colaborador, 
	                dbo_Cat_Colaborador.Nombre AS Colaborador, 
	                a.Id_Terminos_Pago, 
	                dbo_Cat_Terminos_Pago.Nombre AS Terminos_Pago, 
	                a.Id_Moneda, 
	                dbo_Cat_Moneda.Clave AS Moneda, 
	                a.LimiteCredito

                FROM
 
	                ((((((dbo_Cat_Cliente AS a 
	                INNER JOIN 	dbo_Cat_Grupo_Clientes ON a.Id_GrupoClientes = dbo_Cat_Grupo_Clientes.Id_GrupoClientes)
	                INNER JOIN 	dbo_Cat_Colaborador ON a.Id_Colaborador = dbo_Cat_Colaborador.Id_Colaborador)
	                INNER JOIN 	dbo_Cat_Terminos_Pago ON a.Id_Terminos_Pago = dbo_Cat_Terminos_Pago.Id_Terminos_Pago)
	                INNER JOIN  dbo_Cat_Moneda ON a.Id_Moneda = dbo_Cat_Moneda.Id_Moneda)
	                INNER JOIN dbo_Cat_SIIE_Pais AS Pais_Cliente ON Pais_Cliente.Id_SIIE_Pais = a.Id_Pais)
	                INNER JOIN dbo_Cat_SIIE_Estado AS Estado_Cliente ON Estado_Cliente.Id_SIIE_Estado = a.Id_Estado)

                WHERE
   
	                    (a.EsCliente = @@EsCliente)
                    AND a.RFC = '@@RFC' 
                    AND (@@Id_GrupoClientes = -1 OR a.Id_GrupoClientes = @@Id_GrupoClientes)
            ";

            Query = Query.Replace("@@RFC", this._RFC);
            Query = Query.Replace("@@Id_GrupoClientes", Id_GrupoClientes.ToString());

            if (EsCliente)
                Query = Query.Replace("@@EsCliente", "-1");
            else
                Query = Query.Replace("@@EsCliente", "0");

            return SrvDB.ExecuteQuery_Get(Query);
        }

        #endregion
    }
}
